// 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
// jsdoc语法提示教程：https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/129
module.exports = {
  _before: function () {
    // 通用预处理器
  },

  /**
   * 获取账号增强列表（分页）
   * @param {Object} params - 参数
   * @param {Number} params.pageNum - 页码，从1开始，默认1
   * @param {Number} params.pageSize - 每页数量，默认10
   * @param {String} params.email - 可选，邮箱筛选
   */
  async getAccountAugmentList() {
    const { body = {} } = this.getHttpInfo()
    const { params = {}, clientInfo } = JSON.parse(body)

    // 设置默认参数
    const pageNum = params.pageNum || 1
    const pageSize = params.pageSize || 10

    const skip = pageNum == 1 ? 0 : pageSize * (pageNum - 1)

    // 构建查询条件
    const db = uniCloud.databaseForJQL({ clientInfo })
    let dbQuery = db.collection('mo-unicloud-account-augment')

    // 如果有邮箱筛选条件
    if (params.email) {
      dbQuery = dbQuery.where({
        email: new RegExp(params.email, 'i') // 模糊匹配，忽略大小写
      })
    }

    const res = await dbQuery
      .orderBy('create_time', 'desc') // 按创建时间倒序
      .skip(skip)
      .limit(pageSize)
      .get({
        getCount: true
      })

    return res
  },
	
	async getAccountAugmentEmailList() {
	  const { body = {} } = this.getHttpInfo()
	  const { clientInfo } = JSON.parse(body)
	  const db = uniCloud.databaseForJQL({ clientInfo })
	  let dbQuery = db.collection('mo-unicloud-account-augment')

	  const res = await dbQuery
			.field("email")
	    .get()
	
	  return res
	},

  /**
   * 新增账号增强
   * @param {Object} params - 参数
   * @param {String} params.email - 邮箱
   */
  async addAccountAugment() {
    const { body = {} } = this.getHttpInfo()
    const { params, clientInfo } = JSON.parse(body)

    // 参数验证
    if (!params.email) {
      return { errCode: 400, errMsg: '邮箱不能为空' }
    }

    // 验证邮箱格式
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
    if (!emailRegex.test(params.email)) {
      return { errCode: 400, errMsg: '邮箱格式不正确' }
    }

    // 检查邮箱是否已存在
    const existingRecord = await uniCloud
      .databaseForJQL({ clientInfo })
      .collection('mo-unicloud-account-augment')
      .where({ email: params.email })
      .count()

    if (existingRecord.total > 0) {
      return { errCode: 400, errMsg: '邮箱已存在' }
    }

    // 剔除多余字段
    delete params._id

    const res = await uniCloud
      .databaseForJQL({ clientInfo })
      .collection('mo-unicloud-account-augment')
      .add({
        email: params.email,
				account_type: params.account_type
        // create_time 会自动生成
      })

    return res
  },

  /**
   * 更新账号增强
   * @param {Object} params - 参数
   * @param {String} params._id - 记录ID
   * @param {String} params.email - 邮箱
   */
  async updateAccountAugment() {
    const { body = {} } = this.getHttpInfo()
    const { params, clientInfo } = JSON.parse(body)

    if (!params._id) {
      return { errCode: 400, errMsg: '缺少必要参数_id' }
    }

    const _id = params._id

    // 剔除_id字段，构建更新数据
    delete params._id

    const res = await uniCloud
      .databaseForJQL({ clientInfo })
      .collection('mo-unicloud-account-augment')
      .where({ _id })
      .update(params)

    return res
  },

  /**
   * 删除账号增强
   * @param {Object} params - 参数
   * @param {String} params._id - 记录ID
   */
  async deleteAccountAugment() {
    const { body = {} } = this.getHttpInfo()
    const { params, clientInfo } = JSON.parse(body)

    if (!params._id) {
      return { errCode: 400, errMsg: '缺少必要参数_id' }
    }

    const res = await uniCloud
      .databaseForJQL({ clientInfo })
      .collection('mo-unicloud-account-augment')
      .where({ _id: params._id })
      .remove()

    return res
  }
}
